package main

import "fmt"

type Person struct {
	name    string
	age     int
	address Address
}
type Address struct {
	city, state string
}

// 结构体中是可以嵌套的，我们就可以定义很多复杂的对象，来进行拼接了，构成了一个更大的对象
func main() {
	var person = Person{}
	person.name = "John Doe"
	person.age = 25
	person.address = Address{city: "San Francisco", state: "CA"}
	fmt.Println("person.name:", person.name)
	fmt.Println("person.age:", person.age)
	fmt.Println("person.address:", person.address)
	fmt.Println("person.address.city:", person.address.city)
	fmt.Println("person.address.state:", person.address.state)
}

type user struct {
	name string
	age  int
}

//结构体导出
//public 公开的，所有地方都可以使用 、priavte私有的，只能自己使用
//结构体：结构体名字，属性名字 。大写字母，可以导出使用，小写字母，不能导出使用。
//如果结构体名称首字母小写，则结构体不会被导出。这时，即使结构体成员字段名首字母大写，也不会被导出。
//如果结构体名称首字母大写，则结构体可被导出，但只会导出大写首字母的成员字段，那些小写首字母的成员字段不会被导出。
//如果存在嵌套结构体，即使嵌套在内层的结构体名称首字母小写，外部也能访问到其中首字母大写的成员字段。
